package com.cy.mall.service.enter;

import com.cy.mall.model.PageBean;
import com.cy.mall.model.ao.enter.*;
import com.cy.mall.model.domain.enter.Enter;
import com.cy.mall.model.dto.shuidai.EnterEvaluateRequestParamDTO;
import com.cy.mall.model.query.enter.EnterListQuery;
import com.cy.mall.model.vo.enter.*;

import java.util.List;
import java.util.Map;

/**
 * @Description 企业 service
 * @Author tanyilin
 * @Date 2019/3/20 14:01
 */
public interface EnterService {

    /**
     * 添加企业
     * @param enter
     * @return void
     */
    void addEnter(Enter enter);

    /**
     * 编辑修改企业
     * @param enter
     * @return void
     */
    void updateEnter(Enter enter);

    /**
     * 企业详情
     * @param enterId
     * @return com.cy.mall.model.domain.enter.Enter
     */
    Enter queryEnterDetail(Long enterId);

    /**
     * 前台-我的企业列表
     * @param query
     * @return com.cy.mall.model.PageBean<com.cy.mall.model.vo.enter.EnterListVO>
     */
    PageBean<EnterListVO> queryEnterList(EnterListQuery query);

    /**
     * 查询企业评估信息填写状态
     * @param enterId
     * @return com.cy.mall.model.vo.enter.EnterEvaluateStatusVO
     */
    EnterEvaluateStatusVO queryEvaluateStatus(Long enterId);

    /**
     * 查询企业基本信息
     * @param enterId
     * @return com.cy.mall.model.ao.enter.EnterBaseInfoDetailVO
     */
    EnterBaseInfoDetailVO getEnterBaseInfo(Long enterId);

    /**
     * 保存企业基本信息
     * @param saveAO
     * @return void
     */
    void doSaveEnterBaseInfo(EnterBaseInfoSaveAO saveAO);

    /**
     * 查询企业-股东信息
     * @param enterId
     * @return java.util.List<com.cy.mall.model.vo.enter.EnterShareholderInfoVO>
     */
    List<EnterShareholderInfoVO> getEnterShareholderInfo(Long enterId);

    /**
     * 保存企业-股东信息
     * @param saveAO
     * @return void
     */
    void doSaveShareholderInfo(EnterShareholderInfoSaveAO saveAO);

    /**
     * 获取企业-管理人员信息
     * @param enterId
     * @return java.util.List<com.cy.mall.model.vo.enter.EnterManagerInfoVO>
     */
    List<EnterManagerInfoVO> getEnterManagerInfo(Long enterId);

    /**
     * 保存企业-管理人员信息
     * @param saveAO
     * @return void
     */
    void doSaveEnterManagerInfo(EnterManagerInfoSaveAO saveAO);

    /**
     * 获取企业-对外投资信息
     * @param enterId
     * @return java.util.List<com.cy.mall.model.vo.enter.EnterInvestmentInfoVO>
     */
    List<EnterInvestmentInfoVO> getEnterInvestmentInfo(Long enterId);

    /**
     * 保存企业-对外投资信息
     * @param saveAO
     * @return void
     */
    void doSaveEnterInvestmentInfo(EnterInvestmentInfoSaveAO saveAO);

    /**
     * 获取 企业-申报数据明细
     * @param enterId
     * @return java.util.List<com.cy.mall.model.vo.enter.EnterDeclareDataDetailVO>
     */
    List<EnterDeclareDataDetailVO> getEnterDeclareDataDetail(Long enterId);

    /**
     * 保存 企业-申报数据明细
     * @param saveAO
     * @return void
     */
    void doSaveEnterDeclareDataDetail(EnterDeclareDataDetailSaveAO saveAO);

    /**
     * 根据 enterId 查询企业 利润 报表
     * @param enterId
     * @return java.util.Map<java.lang.String,java.lang.Object>
     */
    Map<String, Object> getEnterCorporateProfit(Long enterId);

    /**
     * 保存企业 利润 报表 信息
     * @param saveAO
     * @return void
     */
    void doSaveEnterCorporateProfit(EnterCorporateProfitSaveAO saveAO);

    /**
     * 根据 enterId 查询企业 财务 报表 信息
     * @param enterId
     * @return java.util.Map<java.lang.String,java.lang.Object>
     */
    Map<String, Object> getEnterFinanceInfo(Long enterId);

    /**
     * 保存企业 财务 报表 信息
     * @param saveAO
     * @return void
     */
    void doSaveEnterFinanceInfo(EnterFinanceInfoSaveAO saveAO);

    /**
     * 查询得到请求第三方税贷 进行 企业评估 接口的参数
     * @param enterId
     * @return java.util.Map<java.lang.String,java.lang.Object>
     */
    Map<String, Object> getEnterEvaluateRequestParam(Long enterId);

    /**
     * 保存 企业评估记录结果
     * @param resultMap
     * @return void
     */
    void doSaveEvaluateRecord(Map<String, Object> resultMap);


}
